using System;
using System.Collections.Generic;
using System.Text;

namespace Sandia.MVCFramework.Request
{
    /// <summary>
    /// An interface for classes used to create IRequests.
    /// </summary>
    public interface IRequestFactory
    {
        /// <summary>
        /// Create a request using the given parameters.
        /// </summary>
        /// <param name="requestType">The type of request to create.</param>
        void CreateRequest(
            Type requestType);

        /// <summary>
        /// Adds a parameter of the given type with the given data to the
        /// parameter.
        /// </summary>
        /// <param name="parameterType">The type of parameter to add.</param>
        /// <param name="data">The data to put in the parameter.</param>
        void SetParameter(
            Type parameterType,
            object data);

        /// <summary>
        /// Set the requester identifier and return the created request.
        /// </summary>
        /// <param name="requesterID">the identifier of the requester</param>
        /// <returns>the created request</returns>
        IRequest GetRequest(
            string requesterID);
    }
}
